Please read this file! It contains important information:
1. About the EV Plug-In Auditor: General notes on usage. Very important.
2. For Beginners: Read this if you're unfamiliar with how EV Data files and plug-ins work so that you know what to do if the auditor finds a conflict.
3. Miscellaneous Notes: If you're interested...
4. Developer Read Me: Look in the accompanying folder for this important developer info. A must-read for EV plug-in developers!
====================================================================This conflict catcher has not been fully or extensively tested, so I cannot guarantee its reliability. You are hereby warned that you alone are to be held responsible for any damage or loss to your computer, data, or otherwise as a result of the use of this software. I can't be held responsible for any problems caused by this program. I will be glad to entertain bug reports and suggestions, though, if you e-mail me at the above address. Don't bother Ambrosia Software about the EV Plug-In Auditor; they didn't create this program.
This program may be freely distributed provided that this Read Me document and the developer info in the accompanying folder are included with the Plug-In Auditor itself.
Note: This utility is not created by Ambrosia Software and therefore all bug reports should be sent directly to the author at <afn02635@afn.org>.
Note 2: This utility isn't guaranteed to find every single conflict in your plug-in folder; it's entirely possible that I have not accounted for a certain type of conflict. However, as far as I can tell, the auditor does a great job of identifying conflicts, so it sure can't hurt to use it. I once spent at least 15 minutes digging through the source code looking for a bug that caused certain conflicts to be reported in my test plug-in, only to realize that the auditor had actually caught a conflict that I didn't anticipate...
About the EV Plug-In Auditor
Created by the author of Schmelta-V, the EV mission/person editor, this helpful little utility "audits" your EV Plug-Ins folder to reveal conflicts between plug-ins. As you may know, plug-in files can be developed and distributed by third-party-type folks, and these plug-ins are designed around the concept of replacing or adding to EV's resources by placing the updated resources in a plug-in file. Frequently, two plug-ins replace one another's resources, causing them both to behave strangely while in play. The EV Plug-In Auditor attempts to prevent such conflicts.
To use the auditor, place the application in the same folder as the Escape Velocity application. For best results, make sure the Escape Velocity application is named "Escape Velocity" (without quotes, of course). Instead of opening EV by double-clicking EV itself, open the auditor. If the Escape Velocity application is found, the auditor proceeds invisibly. If not, you are prompted with a dialog that will allow you to point the auditor toward the EV application. Then, the EV Plug-Ins folder is found by searching the directory of the EV application that you specify. The auditor will then take a few moments to scan your plug-in folder for conflicts, and if it finds none it will launch EV. You'll hardly even see it work, assuming you have no conflicts.
If conflicts are found, the auditor will display a dialog with a list of all the conflicts found. A list of the conflicts will be presented on the left side of the dialog, where each line represents a single conflict. Each conflict listing contains the conflicting resource type and ID as well as the names of the two plug-ins that are conflicting. Clicking on a conflict will display a brief description of the reason for the conflict on the right. Once you're finished examining the audit, you can choose to quit without launching EV or to go ahead and launch EV despite the warning. That's all there is to it!
If all the stuff in the auditor's report is Greek to you, read the For Beginners section below.
If you just want to check your plug-ins folder without launching EV, hold down the command key while launching the auditor. It'll check your plug-ins folder and present a dialog if it finds conflicts, but if it finds no conflicts, it'll congratulate your housekeeping and quit without launching EV.
By the way, the auditor assumes that there are conflicts with the EV Tuner extension required by EV 1.0.2; the tuner is ignored by the auditor. Likewise, any conflicts with the data file are overlooked; it is assumed to be the plug-in developer's responsibility to avoid conflicts with the main EV Data/EV Tuner files.
Also, note that some scenarios which use multiple plug-ins (such as Astex, which uses the so-called "Stormbringer" plug-in construction guidelines) will cause conflicts between these plug-ins. These developers should read the Developer Read Me document to find out how to solve this problem. In the meantime, you can click "Launch EV" to launch EV despite the warning, assuming there aren't any conflicts between either of these plug-ins and yet another plug-in.
For Beginners
If you don't know much about the EV Data and EV plug-in files, and find the auditor's report rather confusing, this section is for you. Otherwise, skip to the notes below.
When I use the auditor, it shows a dialog full of text that goes right over my head... What do I need to know in this situation?
You can ignore the four-letter resource types and ID numbers at the beginning of each list item on the left if you like, as this is irrelevant to anyone not interested in solving conflicts. All you need to know is which plug-ins are conflicting, and that is evident from the two plug-in names in each line. Since each line of text in the large box on the left represents a single conflict between two plug-ins, you know that if you see two plug-ins paired on a single line, even just once, those plug-ins conflict. That is, if you see plug-in A paired with plug-in B in a single line, you should assume that plug-in A and B are incompatible. You should quit and remove one of them from your EV Plug-Ins folder.
When should I use the "Launch EV" button instead of quitting?
The only time you should override the warning and launch EV is if the only conflicts you see occur between two plug-ins that are specifically designed to work together. For instance, some plug-ins use a format called "Stormbringer" which relies on having multiple plug-in files for the same scenario. Unfortunately, the auditor doesn't know they're meant to work together and reports conflicts between elements of the same scenario. An example of such a plug is the Astex scenario. If you launch the auditor and the only conflicts you find are between Astex Main and Astex Missions (that is, if the only conflicts are between plug-ins that are part of the Astex set), then it's OK to launch. If you see any names listed that aren't Astex, then you should quit and remove one of the offending plug-ins.
If you still have questions, by all means, contact me at <afn02635@afn.org>.
Miscellaneous Notes
Don't want to put the auditor in the same folder as the Escape Velocity application? Don't want to change your EV app's name to "Escape Velocity"? Just make an alias to the EV app, make sure the alias is named Escape Velocity and in the same folder as the auditor, and you're set. If you're ResEdit savvy, you can edit STR# resource 128, the first string of which is the file path that the auditor uses (this path is fed directly to FSMakeFSSpec(), if that means anything to you). Just don't redistribute the auditor if you decide to make changes to its resources.
The auditor identifies two types of conflicts: conflicts where two plug-ins modify the same resource and ID, and conflicts where one plug-in replaces a resource that another plug-in's resources reference (and, conversely, when a plug-in's resources refer to a resource that has been modified by a previously loaded/checked plug-in). The end result is that you may see more than one conflict for each resource type, because it is quite possible to have a plug-in refer to and modify a resource which is then modified by a plug-in loaded later.
The auditor treats certain STR# resources as if they were STR resources, for the purposes of more detailed conflict checking. (See below for information from the EV Bible on how the two resources are linked.) In general, STR# resources that can be treated as a set of STR resources are treated as such, except in cases where it's more efficient to simply report an STR#-STR# conflict. If two STR# resources collide, it'll say so in the dialog. If a STR# and a STR collide, it'll call it an STR conflict and give the STR ID. If you look up the ID below, you can find which STR# (and which indexed string precisely) is conflicting. One of the most confusing results is demonstrated in this example: if a system refers to message buoy string 2, and a STR# resource in another plug-in modifies the message buoy listings, it'll appear as a STR conflict (in this example, it'll appear as a conflict in STR 1001, because the only real conflict is between the second string of the message buoy list, which one plug-in requires and another plug-in modifies).
From the EV Bible:
String set: STR# ID: STR Patched ID:
Message buoys 1000 1000-2500
Short outfit names 5000 3000-3127
Lowercase outfit names 5004 3200-3327
Lowercase plural outfit names 5005 3400-3527
Short shipyard names 5001 3600-3663
Long shipyard names 5002 3700-3763
Short ship names for communications dialog 5006 3800-3863
Government abbreviations for target display 6000 4000-4127
Government short names for comm dialog 6001 4200-4327
Hail quotes 7101 5000-5511
Disaster news 8102 6000-6127
Stellar types 1100 7000-7063
jünk abbreviations 4005 8000-8127
Lowercase jünk names 4006 8200-8327
Generic cargo names 4000 9000-9063
Lowercase cargo names 4001 9100-9163
Cargo abbreviations for status display 4002 9200-9263
Base prices of commodities 4004 9300-9305
Commodity abbreviations for status display 4003 9400-9405
Any Questions:
Polite bug reports and suggestions are welcome! Send them to <afn02635@afn.org> or throw comments up for discussion on Ambrosia's delta_v mailing list. I can also be found on IRC #ev from time to time as Jericon.
My Home Page...
Please visit my home page at <http://www.afn.org/~afn02635/>. Also, the latest version of both Schmelta-V and the EV Plug-In Auditor can always be found at <http://www.afn.org/~afn02635/ev/>. If you visit this page, you can sign up to receive notification of updates and new versions...
Thanks!
Thanks to Tom "Tartarus" Rini, Howard Lopez, and Bob Griffith, who graciously agreed to take the auditor for a test drive before its first public release.
Thanks to Andrew Pearson, whose incredibly detailed bug report and helpfulness was essential in tracking down a rather nasty bug in version 1.0.0.
Many thanks to the cool people on comp.sys.mac.programmer.help and #macdev who have been both helpful and supportive during this project.
Thanks to Dave Mark for all of his outrageously useful Macintosh programming guides, especially the new "Ultimate Mac Programming."
Thanks to Todd Clements, who was responsible for the DialogControls source found on Info-Mac, which was helpful in the development of this program.
Thanks to the folks who put together Apple's MoreFiles; I adapted a few of their routines.
...and, of course, thanks to Matt Burch and Ambrosia Software for their wonderful game...
Version History:
Version 1.0.1 (7/23/96):
- Fixed a bug that caused a rather heinous crash when certain plug-ins were checked, thanks to Andrew Pearson.
- The command key now prevents EV from launching in the event that there are no conflicts, as the option key has the unwanted side effect of closing the frontmost window in the Finder after launch.
- Added a section to this Read Me to help folks who don't know much about the EV Data file interpret deal with the auditor's display.